package com.clientes;

import java.util.List;
import java.util.concurrent.ExecutionException;

import org.json.JSONException;
import org.json.JSONObject;

import com.eventos.ActivityVerEvento;
import com.eventssmartphone.AplicacionEvents;
import com.eventssmartphone.FacebookConnector;
import com.eventssmartphone.JSONLogin;
import com.eventssmartphone.R;

import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.text.method.LinkMovementMethod;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class ActivityLogin extends Activity {
	private Uri uri;
	
	private static final String FACEBOOK_APPID = "247213245385444";
	private static final String FACEBOOK_PERMISSION = "publish_stream";
	private FacebookConnector facebookConnector;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.cl_login);
		
        Resources res = getResources();
        TextView registrarse = (TextView) findViewById(R.id.txtRegistrarse);
        TextView olvidoContrasena = (TextView) findViewById(R.id.txtOlvidoContrasena);
        
        //Colocando UNDERLINE a 'Registro' y a 'Olvido su Contraseña'
        CharSequence styledText = res.getText(R.string.registro);
        registrarse.setText(styledText, TextView.BufferType.SPANNABLE);
        CharSequence styledText2 = res.getText(R.string.cambiarContrasena);
        olvidoContrasena.setText(styledText2, TextView.BufferType.SPANNABLE);
        
        //Habilitando los enlaces a la WEB
        registrarse.setMovementMethod(LinkMovementMethod.getInstance());
        olvidoContrasena.setMovementMethod(LinkMovementMethod.getInstance());
        
        //Obtiene el Identificador Uniforme de Recurso de la URL de la que se viene
        uri = getIntent().getData();
        
        //Creando conexion a Facebook
        this.facebookConnector = new FacebookConnector(FACEBOOK_APPID, this, getApplicationContext(), new String[] {FACEBOOK_PERMISSION});
    }
	
    
    public void onButtonClicked(View v) {
    	EditText txtUsuario= (EditText) findViewById(R.id.tbxUsuario);
    	String strUsuario = txtUsuario.getText().toString();
    	EditText txtContrasena= (EditText) findViewById(R.id.tbxContrasena);
    	String strContrasena= txtContrasena.getText().toString();
    	
    	if (strUsuario==null || strUsuario.length() == 0 || strContrasena == null || strContrasena.length() == 0 )
    		Toast.makeText(this, "Ingrese su usuario y contrasena", Toast.LENGTH_LONG).show();    
    	
    	JSONObject jUsuarios;
    	try {
    		jUsuarios=(new JSONLogin().execute("http://200.16.7.112:3000/users/sign_in",strUsuario,strContrasena)).get();
    	} catch (InterruptedException e1) {
    		e1.printStackTrace();
    		return;
    	} catch (ExecutionException e1) {
    		e1.printStackTrace();
    		return;
    	}
    	
    	if (jUsuarios!=null){
    		try {
    			AplicacionEvents aplicacion = (AplicacionEvents) this.getApplication();
    			aplicacion.setUsuarioEvents(true);
    			aplicacion.setIdUsuario(jUsuarios.getJSONObject("client").getString("id"));
    			continuarActividad();
    		} catch (JSONException e){
    			Toast.makeText(this, "Ocurrio un error en la conexion.", Toast.LENGTH_LONG).show();
    		}
    	}
    	else{
    		Toast.makeText(this, "Usuario o contrasena incorrectos", Toast.LENGTH_LONG).show();    		
    	}
    }
    
    
    public void onFacebookButtonClicked(View v) {
    	facebookConnector.login();
    	
    	if (facebookConnector.getFacebook().isSessionValid()) {
    		AplicacionEvents aplicacion = (AplicacionEvents) this.getApplication();
    		aplicacion.setUsuarioEvents(false);
    		continuarActividad();
		}
    }
    
    
    /** 
     * Valida el Identificador Uniforme de Recurso (URI) y 
     * dependiendo del sitio de donde se viene (web o no)
     * continua a la Actividad correspondiente, ya sea
     * un Evento directamente o al menu principal
     */
    public void continuarActividad() {
    	 if (uri!=null){
    		//String scheme = uri.getScheme(); // "http"
    		//String host = uri.getHost(); // web principal
    		List<String> params = uri.getPathSegments();
    		/*String param1 = params.get(0); // "event"*/
    		if  (params.size()==2){
    			try{
    				int  param2=0;
    				param2= Integer.parseInt(params.get(1)); // "1234"
    				if(param2>0){
    					Intent intent = new Intent(this, ActivityVerEvento.class);
    					Bundle b = new Bundle();
    					b.putInt("idEvento", param2 ); 
    					intent.putExtras(b);
    					startActivity(intent);
    				} else {
    					Toast.makeText(this, "Id de evento no valido.", Toast.LENGTH_SHORT);
    				}
    			} catch (Exception e) {
    				Toast.makeText(ActivityLogin.this, "Id de evento no valido.", Toast.LENGTH_LONG).show();
    				Intent intent= new Intent(this, ActivityMenu.class);
    				startActivity(intent);
    			}
    		}
    	} else {
    		Intent intent= new Intent(this, ActivityMenu.class);
    		startActivity(intent);
    	}
    }
}
